import copy  # 导入copy模块


'''
作用域
    1. 作用域是一个变量的有效范围
    2. 全局变量：在函数外部定义的变量
    3. 局部变量：在函数内部定义的变量
    4. 如果局部变量和全局变量同名，函数内部会优先使用局部变量
    5. 如果需要在函数内部修改全局变量，需要使用global关键字
    6. 如果需要在函数内部修改全局变量，需要使用global关键字 

    调用变量时，会先在局部变量中查找，如果没有找到，再去全局变量中查找，如果还没有找到，会去查找内置变量 内置没有找到会报错
'''
# 全局变量
a = 100
print(a)
print(__name__)
__name__="123"
def func():
    # 局部变量
    print(__name__)


def func1():
    global a
    a = 200
    print(a)

'''
## 深浅拷贝
 
'''
a = [1, 2, 3]
b = a        # 是b指向了a的内存地址
c=a.copy()   # 浅拷贝  实际上是c指向了一个新的内存地址 但是c中的元素还是指向原来的内存地址
d=copy.deepcopy(a) # 深拷贝   
print(a,b,c,d)
print(id(a), id(b),id(c),id(d))
a.insert(0,0) #  修改a的值 b的值也会改变 但是c的值不会改变
print(a,b,c,d)
print(id(a), id(b),id(c),id(d))
print(id(a[-1]),id(b[-1]),id(c[-1]),id(d[-1]))
a.append(5)
print(id(a[-1]),id(b[-1]),id(c[-1]),id(d[-1]))

func()
func1()